package com.glut.campusrepair.mapper;

import com.glut.campusrepair.dto.RepairTasksShortdto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import com.glut.campusrepair.entity.RepairTasks;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glut.campusrepair.entity.RepairTasksExample;

import java.util.List;
import java.util.Map;

/**
 * 维修进度表 Mapper
 *
 * @author sanminzhi
 * @since 2024-07-19 11:26
 */
@Mapper
public interface RepairTasksMapper extends BaseMapper<RepairTasks> {


    /*wsy*/

    /**
     * 通过维修人员id查询所有简洁版的待接受的任务，再通过其中的故障报修id查找出相应的报修的故障信息
     * */
    List<RepairTasksShortdto> selectAssociation(Integer repairPersonnelId);


    /**
     * 根据维修人员Id查询所有任务
     * */
    List<RepairTasksShortdto> selectTasksById(@Param("repairPersonnelId") Integer repairPersonnelId,@Param("status") String status);


    /**
     * 接受任务
     * 点击接受任务时，将repair_task表中的任务状态参数（status）值为'已接受',并将接受任务的时间赋值给acceptance_time属性
     * */
    int updateById(RepairTasksShortdto repairTasksShortdto);




    /**
     * 根据主键id查询
     *
     * @param taskId
     * @return 记录信息
     */
    RepairTasks selectByPrimaryKey(Integer taskId);

    /**
     * 根据主键删除数据
     *
     * @param taskId
     * @return 数量
     */
    int deleteByPrimaryKey(Integer taskId);

    /**
     * 删除数据
     *
     * @param example 条件
     * @return 删除数量
     */
    int deleteByExample(RepairTasksExample example);

    /**
     * 插入数据库记录（不建议使用）
     *
     * @param record
     */
    int insert(RepairTasks record);

    /**
     * 插入数据库记录（建议使用）
     *
     * @param record 插入数据
     * @return 插入数量
     */
    int insertSelective(RepairTasks record);

    /**
     * 修改数据
     *
     * @param record  更新值
     * @param example 条件
     * @return 更新数量
     */
    int updateByExampleSelective(@Param("record") RepairTasks record, @Param("example") RepairTasksExample example);

    /**
     * 修改数据
     *
     * @param record  更新值
     * @param example 条件
     * @return 更新数量
     */
    int updateByExample(@Param("record") RepairTasks record, @Param("example") RepairTasksExample example);

    /**
     * 修改数据(推荐使用)
     *
     * @param record 更新值
     * @return 更新数量
     */
    int updateByPrimaryKeySelective(RepairTasks record);

    /**
     * 根据主键更新数据
     *
     * @param record 更新值
     * @return 更新数量
     */
    int updateByPrimaryKey(RepairTasks record);

//    int updateStatus(@Param("id") Long id, @Param("status") String status);

    int upCompletionPhoto(Map<String, Object> params);

    int upCompletionPhoto(@Param("taskId") Integer taskId, @Param("completionPhoto") String completionPhoto);
}
